package com.xjh.basestudy.designmode.behaviorMode.behaviorMode7_Mediator.p3_update;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author XuJianHua
 * @Date 2022/10/4 21:45
 * @Description 聊天室抽象类ChatRoom
 * 我们已经实现了围绕聊天室展开的群聊系统。如果需要进一步增强功能就得继续对系统进行重构，例如用户可能需要一对一的私密聊天，或者VIP用户需要具有超级权限等功能。这时我们就可以对聊天室与用户进行多态化设计

 */
public abstract class ChatRoom {

    protected String name;//聊天室命名
    protected List<User> users = new ArrayList<>();//加入聊天室的用户们

    public ChatRoom(String name) {
        this.name = name;//初始化必须命名聊天室
    }

    protected void register(User user) {
        this.users.add(user);//用户进入聊天室加入列表
    }

    protected void deregister(User user) {
        users.remove(user);//用户注销，从列表中删除用户
    }

    protected abstract void sendMsg(User from, User to, String msg);

    protected abstract String processMsg(User from, User to, String msg);

}